package com.supermarket.manage.common.utils;

import java.math.BigDecimal;

/**
 * @author Faxon
 * @version 1.0
 * @date 2020-03-12 20:06
 **/
public class BigDecimalUtil {

    public static final int MONEY_POINT = 2; // 货币保留两位小数

    /**
     * 格式化精度（四舍五入）
     *
     * @param value
     * @param point 小数位数
     * @return double
     */
    public static BigDecimal format(BigDecimal value, int point) {
        return value.setScale(point, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 格式化精度（四舍五入）
     *
     * @param value
     * @return double
     */
    public static BigDecimal formatTwoPoint(BigDecimal value) {
        return value.setScale(MONEY_POINT, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 获取四舍五入的 BigDecimal
     *
     * @param point
     * @return
     */
    public static BigDecimal getNumber(BigDecimal number, int point) {
        return new BigDecimal(number.toString()).setScale(point, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * BigDecimal 相加并四舍五入
     *
     * @param v1
     * @param v2
     */
    public static BigDecimal add(BigDecimal v1, BigDecimal v2) {
        return v1.add(v2).setScale(MONEY_POINT, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * BigDecimal 相减并四舍五入
     *
     * @param v1
     * @param v2
     */
    public static BigDecimal subtract(BigDecimal v1, BigDecimal v2) {
        return v1.subtract(v2).setScale(MONEY_POINT, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * BigDecimal 相乘并四舍五入
     *
     * @param v1
     * @param v2
     */
    public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) {
        return v1.multiply(v2).setScale(MONEY_POINT, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * BigDecimal 相除并四舍五入
     *
     * @param v1
     * @param v2
     */
    public static BigDecimal divide(BigDecimal v1, BigDecimal v2) {
        return v1.divide(v2, 2, BigDecimal.ROUND_HALF_UP);
    }
}
